home *** CD-ROM | disk | FTP | other *** search
- /////////////////////\\\\\\\\\\\\\\\\\\\\\\\
- Dokumentation zur FIDO Unit FVARCONV
- \\\\\\\\\\\\\\\\\\\\\///////////////////////
-
- RELEASE 1.04
- ^^^^^^^^^^^^
-
- =========================================================================
- Autor: Orazio Czerwenka, 2:2450/540.55 @ FidoNet, St.Augustin, 14.06.1994
- =========================================================================
-
- 1. Variablen-Konvertierung, Bits 'n Bytes:
- ------------------------------------------
-
- In der Unit FVARCONV.PAS werden Routinen für die Konvertierung
- von Variablen in solche anderen Typs bereitgestellt sowie Low
- Level Funktionen zur Manipulation einzelner Bits und verwandte
- Routinen.
-
- Dies ist eine Low Level Unit. Sie benötigt keinerlei Routinen
- anderer Units, mit Ausnahme der in Turbo Pascals (6.0 oder
- höher) Unit-Library TURBO.TPL enhaltenen Standard-Units.
-
-
- 2. Kurzbeschreibung:
- --------------------
-
- BitIsSet ........ überprüft ob ein bestimmtes Bit innerhalb
- einer Variablen des Typs Byte gesetzt ist.
- BitsAreSet ...... überprüft ob die Summe verschiedener Bits in
- einer Variablen des Typs Byte gesetzt ist.
- BooleToggle ..... ändert den Wert einer Variablen des Typs
- Boolean in ihr Gegenteil.
- DByte2Word ...... DByte2Word macht aus zwei Byte die als hi und
- lo eines words übergeben werden eine Variable
- des Typs Word, so daß die Bytes als hi und lo
- des words abgefragt werden können
- Dec2Bin ......... konvertiert Dezimalzahlen in einen numeri-
- schen String binären Formats.
- Dec2Hex ......... konvertiert Dezimalzahlen in einen numeri-
- schen String hexadezimalen Formats.
- Dec2Oct ......... konvertiert Dezimahlzahlen in einen numeri-
- schen String oktalen Formats.
- DWord2LongInt .. erzeugt aus dem lower und upper word eines
- DWord eine Variable des Typs LongInt.
- LinearAddr ...... ermittelt die lineare Speicheradresse auf die
- ein als Parameter übergebener Pointer zeigt
- und liefert diese als Variable des Typs
- LongInt zurück.
- LongInt2DWord ... konvertiert eine Variable des Typs LongInt
- in zwei Variablen des Typs Word, von denen
- die erste das lower, die zweite das upper
- word eines DWords darstellen.
- LongInt2Str ..... wandelt unter Verwendung von TPs Standard-
- funktion STR eine Variable des Typs LongInt
- in einen numerischen String um.
- NumStrValue ..... wandelt unter Verwendung von TPs Standard-
- Funktion VAL einen numerischen String in ei-
- ne Variable des Typs Integer um.
- ResetBit ........ setzt ein bestimmtes Bit in einer Variablen
- des Typs Byte zurück.
- SetBit .......... setzt ein bestimmtes Bit in einer Variablen
- des Typs Byte.
- ToggleBit ....... 'toggelt' ein besimmtes Bit in einer Variablen
- des Typs Byte.
-
-
-
-
- 3. Detaillierte Beschreibung:
- -----------------------------
-
- ===============================================================
- BitIsSet
- ---------------------------------------------------------------
- ERSTAUTOR ... General Pascal FAQ as contained in SWAG
-
- ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 22.05.1994
-
- MODIFIKATION ... Orazio Czerwenka
- ---------------------------------------------------------------
-
- BESCHREIBUNG ... überprüft ob ein bestimmtes Bit in einer
- Variablen des Typs Byte gesetzt ist.
-
- DEKLARATION ... function BitIsSet(y,i:byte):Boolean
-
- PARAMETER ... i - das gesuchte Bit.
- y - das zu überprüfende Byte.
-
- ERGEBNIS ... TRUE - wenn Bit i in Byte y gesetzt ist.
- FALSE - wenn Bit i in Byte y nicht gesetzt
- ist.
-
-
- ===============================================================
- BitsAreSet
- ---------------------------------------------------------------
- ERSTAUTOR ... Jürgen Gehlen (PCGo! 5/94, S. 70)
-
- ERSTDATUM ... 22.05.1990 LETZTE ÄNDERUNG ... 22.05.1994
-
- MODIFIKATION ... Orazio Czerwenka
- ---------------------------------------------------------------
-
- BESCHREIBUNG ... überprüft ob die Summe verschiedener Bits in
- einer Variablen des Typs Byte enthalten sind.
-
- DEKLARATION ... function BitsAreSet(y,i:byte):Boolean
-
- PARAMETER ... i - Summe der Bits
- y - das zu überprüfende Byte
-
- ERGEBNIS ... TRUE - wenn die Summe der Bits i in Byte y
- enthalten ist
- FALSE - wenn die Summe der Bits i in Byte y
- nicht enthalten ist
-
-
- ===============================================================
- BooleToggle
- ---------------------------------------------------------------
- ERSTAUTOR ... Orazio Czerwenka, 2:2450/540.55 @ FidoNet
-
- ERSTDATUM ... 19.12.1993 LETZTE ÄNDERUNG ... 20.12.1993
- ---------------------------------------------------------------
-
- BESCHREIBUNG ... ändert den Wert einer Variablen des Typs
- Boolean in ihr Gegenteil.
-
- DEKLARATION ... function BooleToggle(toggle:Boolean):Boolean
-
- PARAMETER ... toggle - die zu verändernde Variable
-
- ERGEBNIS ... TRUE - wenn toggle zuvor false war.
- FALSE - wenn toggle zuvor true war.
-
-
- ===============================================================
- DByte2Word
- ---------------------------------------------------------------
- ERSTAUTOR ... Orazio Czerwenka, 2:2450/540.55 @ FidoNet
-
- ERSTDATUM ... 14.06.1994 LETZTE ÄNDERUNG ... 14.06.1994
- ---------------------------------------------------------------
-
- BESCHREIBUNG ... macht aus zwei Byte die als hi und lo eines
- words übergeben werden eine Variable des Typs
- Word, so daß die Bytes als hi und lo des
- words abgefragt werden können
-
- DEKLARATION ... function DByte2Word(hi,lo:byte): Word;
-
- PARAMETER ... hi - das als hi(word) zu übergebende byte
- lo - das als lo(word) zu übergebende byte
-
- ERGEBNIS ... eine Variable des Typs word, die die Para-
- meter hi und lo als hi(word) und lo(word)
- zur Verfügung stellt
-
-
- ===============================================================
- Dec2Bin
- ---------------------------------------------------------------
- ERSTAUTOR ... Peter Schuette, 2:2452/117.19 @ FidoNet
-
- ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 17.05.1994
-
- MODIFIKATION ... Orazio Czerwenka
- ---------------------------------------------------------------
-
- BESCHREIBUNG ... konvertiert eine Dezimalzahl des Typs LongInt
- in einen numerischen String binären Formats.
-
- DEKLARATION ... function Dec2Bin(d:LongInt;n:Byte):String
-
- PARAMETER ... d - zu konvertierende Variable des Typs
- LongInt.
- n - Länge des auszugebenden Strings.
-
- ERGEBNIS ... ein numerischer String binären Formats.
-
-
- ===============================================================
- Dec2Hex
- ---------------------------------------------------------------
- ERSTAUTOR ... Peter Schuette, 2:2452/117.19 @ FidoNet
-
- ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 17.05.1994
-
- MODIFIKATION ... Orazio Czerwenka
- ---------------------------------------------------------------
-
- BESCHREIBUNG ... konvertiert eine Dezimalzahl des Typs LongInt
- in einen numerischen String hexadezimalen
- Formats.
-
- DEKLARATION ... function Dec2Hex(d:LongInt):String;
-
- PARAMETER ... d - zu konvertierende Variable des Typs
- LongInt.
-
- ERGEBNIS ... ein numerischer String hexadezimalen Formats.
-
-
- ===============================================================
- Dec2Oct
- ---------------------------------------------------------------
- ERSTAUTOR ... Peter Schuette, 2:2452/117.19 @ FidoNet
-
- ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 17.05.1994
-
- MODIFIKATION ... Orazio Czerwenka
- ---------------------------------------------------------------
-
- BESCHREIBUNG ... konvertiert eine Dezimalzahl des Typs LongInt
- in einen numerischen String oktalen Formats.
-
- DEKLARATION ... function Dec2Oct(d:LongInt):String
-
- PARAMETER ... d - zu konvertierende Variable des Typs
- LongInt.
-
- ERGEBNIS ... ein numerischer String oktalen Formats.
-
-
- ===============================================================
- DWord2LongInt
- ---------------------------------------------------------------
- ERSTAUTOR ... Peter Schuette, 2:2452/117.19 @ FidoNet
-
- ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 17.05.1994
-
- MODIFIKATION ... Orazio Czerwenka
- ---------------------------------------------------------------
-
- BESCHREIBUNG ... erzeugt aus dem lower und upper word eines
- DWord eine Variable des Typs LongInt.
-
- DEKLARATION ... procedure
- DWord2LongInt(lower,upper: Word; Var l: LongInt)
-
- PARAMETER ... l - zu erzeugende Variable des Typs
- LongInt.
- lower - das lower word des DWords
- upper - das upper word der DWords
-
- ERGEBNIS ... die übergebenen Variablen des Typs Word lower
- und upper werden als Variable des Typs
- LongInt zurückgeliefert.
-
-
- ===============================================================
- LinearAddr
- ---------------------------------------------------------------
- ERSTAUTOR ... Stefan Frings, 2:2440/210.12 @ FidoNet
-
- ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 27.05.1994
-
- MODIFIKATION ... Orazio Czerwenka
- ---------------------------------------------------------------
-
- BESCHREIBUNG ... ermittelt die lineare Speicheradresse auf die
- ein als Parameter übergebener Pointer zeigt
- und liefert diese als Variable des Typs
- LongInt zurück.
-
- USES ... interne Variable des Type Pt, der in FVARCONV
- im Implementationsteil definiert ist.
-
- DEKLARATION ... function LinearAddr(p:pointer):LongInt;
-
- PARAMETER ... p - der Pointer der auf die zu ermittelnde
- Speicheradresse zeigt.
- ERGEBNIS ... die lineare Adresse wird als Variable des
- Typs LongInt zurückgegeben.
-
-
-
- ===============================================================
- LongInt2DWord
- ---------------------------------------------------------------
- ERSTAUTOR ... Peter Schuette, 2:2452/117.19 @ FidoNet
-
- ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 17.05.1994
-
- MODIFIKATION ... Orazio Czerwenka
- ---------------------------------------------------------------
-
- BESCHREIBUNG ... konvertiert eine Variable des Typs LongInt in
- zwei Variablen des Typs Word, von denen eine
- das lower, die andere das upper word eines
- DWords darstellt.
-
- DEKLARATION ... procedure
- LongInt2DWord(l:LongInt; Var lower,upper:Word)
-
- PARAMETER ... l - zu konvertierende Variable des Typs
- LongInt.
- lower - das lower word des DWords
- upper - das upper word der DWords
-
- ERGEBNIS ... die übergebenen Variablen des Typs Word lower
- und upper werden als das lower und upper word
- eines DWords zurückgeliefert.
-
-
- ===============================================================
- LongInt2Str
- ---------------------------------------------------------------
- ERSTAUTOR ... Orazio Czerwenka, 2:2450/540.55 @ FidoNet
-
- ERSTDATUM ... 20.11.1993 LETZTE ÄNDERUNG ... 21.12.1993
- ---------------------------------------------------------------
-
- BESCHREIBUNG ... konvertiert eine Variable des Typs LongInt in
- einen numerischen String dezimalen Formats.
- erlaubt auch die Übergabe von Variablen der
- Typen Byte, Word, ShortInt und Integer.
-
- DEKLARATION ... function LongInt2Str (l:LongInt):String
-
- ERGEBNIS ... eine Variable des Typs String.
-
-
- ===============================================================
- NumStrValue
- ---------------------------------------------------------------
- ERSTAUTOR ... Orazio Czerwenka, 2:2450/540.55 @ FidoNet
-
- ERSTDATUM ... 04.12.1993 LETZTE ÄNDERUNG ... 22.12.1993
- ---------------------------------------------------------------
-
- BESCHREIBUNG ... konvertiert einen numerischen String in eine
- Variable des Typs Integer.
-
- DEKLARATION ... function NumStrValue (strName:string):Integer
-
- ERGEBNIS ... eine Variable des Typs Integer.
-
-
- ===============================================================
- ResetBit
- ---------------------------------------------------------------
- ERSTAUTOR ... General Pascal FAQ as contained in SWAG
-
- ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 22.05.1994
-
- MODIFIKATION ... Orazio Czerwenka
- ---------------------------------------------------------------
-
- BESCHREIBUNG ... setzt ein bestimmtes Bit in einer Variablen
- des Typs Byte zurück.
-
- DEKLARATION ... procedure ResetBit(var y,i:byte)
-
- PARAMETER ... i - das zurück zu setzende Bit.
- y - das zu ändernde Byte.
-
- ERGEBNIS ... liefert das veränderte Byte zurück.
-
-
- ===============================================================
- SetBit
- ---------------------------------------------------------------
- ERSTAUTOR ... General Pascal FAQ as contained in SWAG
-
- ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 22.05.1994
-
- MODIFIKATION ... Orazio Czerwenka
- ---------------------------------------------------------------
-
- BESCHREIBUNG ... setzt ein bestimmtes Bit in einer Variablen
- des Typs Byte
-
- DEKLARATION ... procedure SetBit(var y,i:byte)
-
- PARAMETER ... i - das zu setzende Bit.
- y - das zu ändernde Byte.
-
- ERGEBNIS ... liefert das veränderte Byte zurück.
-
-
- ===============================================================
- ToggleBit
- ---------------------------------------------------------------
- ERSTAUTOR ... General Pascal FAQ as contained in SWAG
-
- ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 22.05.1994
-
- MODIFIKATION ... Orazio Czerwenka
- ---------------------------------------------------------------
-
- BESCHREIBUNG ... 'toggelt' ein bestimmtes Bit in einer
- Variablen des Typs Byte.
-
- DEKLARATION ... procedure ToggleBit(var y,i:byte)
-
- PARAMETER ... i - das zu 'toggelnde' Bit.
- y - das zu ändernde Byte.
-
- ERGEBNIS ... liefert das veränderte Byte zurück.
-
-
-
- 4. Beispiele:
- -------------
-
- ===============================================================
- BitIsSet
- ---------------------------------------------------------------
-
- BitIsSet(1,0); { ergibt TRUE = das Bit 0 ist in einem Byte
- mit dem Wert 1 gesetzt }
- BitIsSet(2,5); { ergibt FALSE = das Bit 5 ist in einem Byte
- mit dem Wert 2 nicht gesetzt }
-
-
- ===============================================================
- BitsAreSet
- ---------------------------------------------------------------
-
- BitsAreSet(6,2); { ergibt TRUE }
- BitsAreSet(6,3); { ergibt FALSE }
-
-
- ===============================================================
- BooleToggle
- ---------------------------------------------------------------
-
- var
- b : boolean;
- begin
- b:= false;
- writeln(BooleToggle(b)); { Ausgabe = TRUE }
- end.
-
- { ... oder ... }
-
- var
- b : boolean;
- begin
- b:= true;
- b:= BooleToggle(b);
- writeln(b); { Ausgabe = FALSE }
- end.
-
-
- ===============================================================
- DByte2Word
- ---------------------------------------------------------------
-
- var
- h,l:byte;
- w :word;
- begin
- h:= 25; l:= 80;
- w:= DByte2Word(h,l);
- writeln(hi(w),' ',lo(w)); { ergibt: 25 80 }
- end.
-
-
- ===============================================================
- Dec2Bin
- ---------------------------------------------------------------
-
- Dec2Bin(3,3); { ergibt '011'; }
- Dec2Bin(2,4); { ergibt '0010'; }
-
-
- ===============================================================
- Dec2Hex
- ---------------------------------------------------------------
-
- Dec2Hex(255); { ergibt 'FF'; }
-
-
- ===============================================================
- Dec2Oct
- ---------------------------------------------------------------
-
- Dec2Oct(8); { ergibt '10'; }
- Dec2Oct(16); { ergibt '20'; }
-
-
- ===============================================================
- DWord2LongInt
- ---------------------------------------------------------------
-
- var
- i : LongInt;
- begin
- DWord2LongInt(65513,65535,i);
- writeln(i);
- end. { ergibt -23 }
-
-
- ===============================================================
- LinearAddr
- ---------------------------------------------------------------
-
- var
- test : word absolute $0400:$0045;
- begin
- writeln(Dec2Hex(LinearAddr(Ptr(seg(test),ofs(test)))));
- end.
-
- { ergibt: 4045 = $04045 = $0400:$0045 }
-
-
- ===============================================================
- LongInt2DWord
- ---------------------------------------------------------------
-
- var
- l, u : word;
- begin
- LongInt2DWord(-23,l,u);
- writeln(l,' ',u);
- end. { ergibt '65513 65535' }
-
-
- ===============================================================
- LongInt2Str
- ---------------------------------------------------------------
-
- LongInt2Str(-23); { ergibt '-23' }
-
-
- ===============================================================
- NumStrValue
- ---------------------------------------------------------------
-
- NumStrValue('99'); { ergibt 99; }
-
-
- ===============================================================
- SetBit
- ---------------------------------------------------------------
-
- var
- i,
- y : byte;
- begin
- i:= 2;
- y:= 8;
- writeln(y); {ergibt 8}
- SetBit(y,i); {setzt Bit 2 (Wert 4)}
- writeln(y); {ergibt 12}
- end.
-
-
- ===============================================================
- ResetBit
- ---------------------------------------------------------------
-
- var
- i,
- y : byte;
- begin
- i:= 2;
- y:= 12;
- writeln(y); {ergibt 12}
- ResetBit(y,i); {setzt Bit 2 zurück (Wert 4)}
- writeln(y); {ergibt 8}
- end.
-
-
- ===============================================================
- ToggleBit
- ---------------------------------------------------------------
-
- var
- i,
- y : byte;
- begin
- i:= 2;
- y:= 12;
- writeln(y); {ergibt 12}
- ToggleBit(y,i); {setzt Bit 2 zurück (Wert 4)}
- writeln(y); {ergibt 8}
- ToggleBit(y,i); {setzt Bit 2 (Wert 4)}
- writeln(y); {ergibt 12}
- end.
-
-
-
- 5. History:
- -----------
- Neuerungen nach Release ...
- ---------------------------
- ... 1.02: - DByte2Word - DByte2Word macht aus zwei Byte die als
- hi und lo eines words übergeben werden
- eine Variable des Typs Word, so daß die
- Bytes als hi und lo des words abgefragt
- werden können
- ... 1.01: - LinearAddr - ermittelt die lineare Speicheradresse
- auf die ein als Parameter übergebener
- Pointer zeigt und liefert diese als
- Variable des Typs LongInt zurück.
- ... 1.00: - BitIsSet - überprüft ob ein bestimmtes Bit in
- einer Variablen des Typs Byte gesetzt
- ist.
- BooleToggle - erlaubt das 'toggeln' von Variablen des
- Typs Boolean.
- Dec2Bin - konvertiert Dezimalzahlen in einen nu-
- merischen String binären Formats.
- Dec2Hex - konvertiert Dezimalzahlen in einen nu-
- merischen String hexadezimalen Formats.
- Dec2Oct - konvertiert Dezimahlzahlen in einen nu-
- merischen String oktalen Formats.
- DWord2LongInt - erzeugt aus dem lower und upper word
- eines DWord eine Variable des Typs
- LongInt.
- LongInt2DWord - konvertiert eine Variable des Typs
- LongInt in zwei Variablen des Typs
- Word, von denen die erste das lower,
- die zweite das upper word eines DWords
- darstellen.
- ResetBit - setzt ein bestimmtes Bit in einer
- Variablen des Typs Byte zurück.
- SetBit - setzt ein bestimmtes Bit in einer
- Variablen des Typs Byte.
- ToggleBit - 'toggelt' ein besimmtes Bit in einer
- Variablen des Typs Byte.
-
- Änderungen nach Release ...
- ---------------------------
- ... 1.00: - BitsAreSet - die Reihenfolge der Übergabe der Para-
- meter i und y wurde den übrigen bit-
- orientierten Funktionen der Unit (aus-
- nahmsweise) angepaßt.
-
- ==========================================================================
-
- //////////////////////\\\\\\\\\\\\\\\\\\\\\\\
- Ende der Dokumentation zur FIDO Unit FVARCONV
- \\\\\\\\\\\\\\\\\\\\\\///////////////////////
-